package cc.rengu.igas.bomp.common.dao;

import cc.rengu.igas.bomp.common.entity.QrCodeInfo;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 二维码信息表操作接口类
 * Created by 王成 on 2020/3/2
 */
public interface QrCodeInfoMapper {
    /**
     * 登记二维码信息
     *
     * @param qrCodeInfo 二维码信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertQrCodeInfo(QrCodeInfo qrCodeInfo) throws Exception;

    /**
     * 事务 登记二维码信息
     *
     * @param qrCodeInfo 二维码信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertQrCodeInfoByTransaction(QrCodeInfo qrCodeInfo) throws Exception;

    /**
     * 更新二维码信息
     *
     * @param qrCodeInfo 二维码信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateQrCodeInfoById(QrCodeInfo qrCodeInfo) throws Exception;

    /**
     * 根据非业务主键查询二维码信息
     *
     * @param instId 多法人标识
     * @param id     非业务主键
     * @return 二维码信息
     * @throws Exception 异常
     */
    QrCodeInfo selectQrCodeInfoById(String instId, String id) throws Exception;

    /**
     * 根据主键查询二维码信息
     *
     * @param instId 多法人标识
     * @param qrUrl  二维码URL
     * @return 二维码信息
     * @throws Exception 异常
     */
    QrCodeInfo selectQrCodeInfoByPrimaryKey(String instId, String qrUrl) throws Exception;

    /**
     * 根据二维码查询二维码信息
     *
     * @param instId 多法人标识
     * @param qrCode 二维码
     * @return 二维码信息
     * @throws Exception 异常
     */
    QrCodeInfo selectQrCodeInfoByQrCode(String instId, String qrCode) throws Exception;

    /**
     * 根据用户标识查询二维码信息
     *
     * @param instId 多法人标识
     * @param userId 用户标识
     * @return 二维码信息
     * @throws Exception 异常
     */
    QrCodeInfo selectQrCodeInfoByUserId(String instId, String userId) throws Exception;

    /**
     * 根据商户号查询二维码信息
     *
     * @param instId  多法人标识
     * @param mchntNo 商户号
     * @return 二维码信息
     * @throws Exception 异常
     */
    List<QrCodeInfo> selectQrCodeInfoByMchntNo(String instId, String mchntNo) throws Exception;

    /**
     * 根据连锁商户号查询二维码信息
     *
     * @param instId       多法人标识
     * @param chainMchntNo 连锁商户号
     * @return 二维码信息
     * @throws Exception 异常
     */
    List<QrCodeInfo> selectQrCodeInfoByChainMchntNo(String instId, String chainMchntNo) throws Exception;

    /**
     * 根据申请批次号查询二维码信息
     *
     * @param instId       多法人标识
     * @param applyBatchNo 申请批次号
     * @return 二维码信息
     * @throws Exception 异常
     */
    List<QrCodeInfo> selectQrCodeInfoByApplyBatchNo(String instId, String applyBatchNo) throws Exception;


    /**
     * 根据申请批次号查询二维码信息
     *
     * @param instId       多法人标识
     * @param applyBatchNo 申请批次号
     * @param pageInfo     分页
     * @return 二维码信息
     * @throws Exception 异常
     */
    PageResult selectQrCodeInfoByApplyBatchNo(String instId, String applyBatchNo, PageInfo pageInfo) throws Exception;

    /**
     * 查询二维码数量
     *
     * @param instId  多法人标识
     * @param mchntNo 申请批次号
     * @param status  分页
     * @return 二维码信息
     * @throws Exception 异常
     */
    QrCodeInfo selectQrCodeInfoNum(String instId, String mchntNo, String status) throws Exception;


    int updateQrCodeInfoStatusByMchntNo(QrCodeInfo qrCodeInfo) throws Exception;
}
